home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / AEWIN100.ARJ / KEYBD.H < prev    next >
C/C++ Source or Header  |  1990-12-24  |  3KB  |  139 lines

  1. /**********************************************************************
  2.  *  
  3.  *  NAME:           keybd.h
  4.  *  
  5.  *  DESCRIPTION:    keyboard interface
  6.  *  
  7.  *  copyright (c) 1990 J. Alan Eldridge
  8.  * 
  9.  *  M O D I F I C A T I O N   H I S T O R Y
  10.  *
  11.  *  when        who                 what
  12.  *  -------------------------------------------------------------------
  13.  *  08/14/90    J. Alan Eldridge    created
  14.  *  
  15.  *  12/21/90    JAE                 un-object oriented it, because it
  16.  *                                  just didn't seem to fit
  17.  *
  18.  *********************************************************************/
  19.  
  20. #ifndef __KEYBD_H
  21. #define __KEYBD_H
  22.  
  23. //  These are the logical key values returned by the virtual keyboard
  24.  
  25. //  null character
  26.  
  27. #define K_NUL       0
  28.  
  29. //  common keys
  30.  
  31. #define K_ESC       27
  32. #define K_TAB       '\t'
  33. #define K_NL        '\n'
  34. #define K_CR        '\r'
  35. #define K_BACK      '\b'
  36. #define K_BS        '\b'
  37. #define K_SPACE     ' '
  38.  
  39. //  control keys
  40.  
  41. #define K_CTLKEY(c) ((c) - '@')
  42.  
  43. #define K_CTLA      K_CTLKEY('A')
  44. #define K_CTLB      K_CTLKEY('B')
  45. #define K_CTLC      K_CTLKEY('C')
  46. #define K_CTLD      K_CTLKEY('D')
  47. #define K_CTLE      K_CTLKEY('E')
  48. #define K_CTLF      K_CTLKEY('F')
  49. #define K_CTLG      K_CTLKEY('G')
  50. #define K_CTLH      K_CTLKEY('H')
  51. #define K_CTLI      K_CTLKEY('I')
  52. #define K_CTLJ      K_CTLKEY('J')
  53. #define K_CTLK      K_CTLKEY('K')
  54. #define K_CTLL      K_CTLKEY('L')
  55. #define K_CTLM      K_CTLKEY('M')
  56. #define K_CTLN      K_CTLKEY('N')
  57. #define K_CTLO      K_CTLKEY('O')
  58. #define K_CTLP      K_CTLKEY('P')
  59. #define K_CTLQ      K_CTLKEY('Q')
  60. #define K_CTLR      K_CTLKEY('R')
  61. #define K_CTLS      K_CTLKEY('S')
  62. #define K_CTLT      K_CTLKEY('T')
  63. #define K_CTLU      K_CTLKEY('U')
  64. #define K_CTLV      K_CTLKEY('V')
  65. #define K_CTLW      K_CTLKEY('W')
  66. #define K_CTLX      K_CTLKEY('X')
  67. #define K_CTLY      K_CTLKEY('Y')
  68. #define K_CTLZ      K_CTLKEY('Z')
  69.  
  70. #define K_CTL_BKSLASH    K_CTLKEY('\\')
  71.  
  72. //  modifier bits (in high byte)
  73.  
  74. #define K_EXT       0x0100
  75. #define K_ALT       0x0200 
  76. #define K_CTL       0x0400
  77. #define K_SHIFT     0x0800
  78.  
  79. //  shift tab key (backtab)
  80.  
  81. #define K_BACKTAB   (K_TAB | K_SHIFT)
  82.  
  83. //  function keys
  84.  
  85. #define K_F1        (130 | K_EXT)
  86. #define K_F2        ((K_F1) + 1)
  87. #define K_F3        ((K_F1) + 2)
  88. #define K_F4        ((K_F1) + 3)
  89. #define K_F5        ((K_F1) + 4)
  90. #define K_F6        ((K_F1) + 5)
  91. #define K_F7        ((K_F1) + 6)
  92. #define K_F8        ((K_F1) + 7)
  93. #define K_F9        ((K_F1) + 8)
  94. #define K_F10       ((K_F1) + 9)
  95. #define K_F11       ((K_F1) + 10)
  96. #define K_F12       ((K_F1) + 11)
  97.  
  98. //  cursor movement keys
  99.  
  100. #define K_HOME      (150 | K_EXT)
  101. #define K_UP        (151 | K_EXT)
  102. #define K_PGUP      (152 | K_EXT)
  103. #define K_LEFT      (153 | K_EXT)
  104. #define K_RIGHT     (154 | K_EXT)
  105. #define K_END       (155 | K_EXT)
  106. #define K_DOWN      (156 | K_EXT)
  107. #define K_PGDN      (157 | K_EXT)
  108.  
  109. //  insert and delete
  110.  
  111. #define K_INS       (158 | K_EXT)
  112. #define K_DEL       (159 | K_EXT)
  113.  
  114. //  print screen key
  115.  
  116. #define K_PRTSC     (160 | K_EXT)
  117.  
  118. //  unknown key
  119.  
  120. #define K_UNKNOWN   (255 | K_EXT)
  121.  
  122. //  impossible value
  123.  
  124. #define K_ILLEGAL   -1
  125.  
  126. //  device interface routines
  127.  
  128. inline int  kbd_ready()     //  is a key available?
  129.     { return kbhit(); }
  130.     
  131. int kbd_getkey();   //  (wait for and) get next key
  132.  
  133. //  like strchr(), but for key values
  134.  
  135. int findkey(int *arr, int key);
  136.  
  137. #endif
  138.  
  139.